Field
One or more example embodiments relate to a method, apparatus, system and/or non-transitory computer readable medium for protecting software code.
Description of Related Art
An intermediate language or InterLanguage (IL) may be a software programming language used as an intermediate stage when translating a source language program with a complier and making the source language program into a target language program. For example, if a high level language program is made into a machine language program by changing the high level language program to an assembly language and by assembling the changed assembly language, the assembly language is considered the intermediate language.
The conventional art discusses converting an intermediate language of a mobile platform, and discloses a C/C++ compiler configured to convert mobile platform source code developed with C or C++ language to an intermediate language code required by an interpreter of a mobile communication terminal. An intermediate language assembler converts the intermediate language code to a format executed at the interpreter of the mobile communication terminal.
Software code of an application that goes through the conversion to the intermediate language may be vulnerable to decompilation efforts due to various intrinsic characteristics of the intermediate code. For example, code of an application produced with a high level programming language, such as C sharp (C#), using a software tool, such as Unity, may be compiled in the form of an intermediate language, such as a dynamic linking library (DLL), and provided to a client electronic device and executed within a framework of the electronic device. Here, due to various characteristics of the intermediate language, the code may be corrected and compiled again as a new DLL by decompiling the originally compiled DLL, therefore allowing for forgery, reverse engineering, and/or unauthorized modification, etc. of the software application.
In the case of simply encrypting a file in a form of an intermediate language and providing the encrypted file to a client in order to prevent forgery, reverse engineering, unauthorized modification, etc., an electronic device of the client cannot execute the encrypted file and the application cannot be executed. In the case of providing a decryption device or information, for example, a decryption key, to the client in order to decrypt the encrypted file, the forgery, etc., issue of the application may arise again.
Also, the related art discloses technology for protecting software code by adding a protection module file configured in a binary code that is difficult to analyze to a package of a software application. However, even in this case, the code may be forged using a scheme of deleting the protection module file from the package.
Alternatively, in the related art associated with encrypting a file, the file may be slightly manipulated before a protection module is loaded. Thus, in this case, the protection module may not be detected. That is, the file may be forged by making a detour around the protection module.